#ifndef IO3D_H
#define IO3D_H

#include <string>
#include <vector>

#include "../IO/IO.h"
#include "../Diagnostic/Diagnostic3D.h"
#include "../Grid/Grid3D.h"


class IO3D : public IO {
public:

    IO3D(PicParams* params_, ParallelMPI* pmpi_);

    ~IO3D();

    virtual void write( PicParams* params_, ParallelMPI* pmpi_, PhysicalField* fields, vector<Species*>& vecSpecies, Diagnostic* diag, int itime);

    virtual void read( PicParams* params_, ParallelMPI* pmpi_, PhysicalField* fields, vector<Species*>& vecSpecies, Diagnostic* diag, int itime){};

    virtual void createFieldsGroup();

    virtual void createDiagsGroup();

    //write grid to grid.h5 file
    virtual void writeGrid(Grid* grid);

    //read grid from grid.h5 file
    virtual void readGrid(Grid* grid);

private:



};

#endif
